﻿using ProyectoDeTesis.Controladores;
using System;
using System.Drawing;
using System.Windows.Forms;

namespace ProyectoDeTesis.Vistas
{
    public partial class InicioSesion : Form
    {
        private int pantalla_id = 33;
        private int modulo_id = 1;
        RegistroActividad registroActividad = new RegistroActividad();
        public PersonalController personalController = new PersonalController();
        public LogController logController = new LogController();
        public Usuario usuario_actual = new Usuario();
        Bd_tesisDataContext db = new Coneccion().getsession();
        
        public InicioSesion()
        {
            InitializeComponent();
        }      

        private void BtnIngresar_MouseEnter(object sender, EventArgs e)
        {
            this.BtnIngresar.BackColor = Color.FromArgb(185, 211,238);
        }

        private void BtnCancelar_MouseEnter(object sender, EventArgs e)
        {
            this.BtnCancelar.BackColor = Color.FromArgb(185, 211, 238);
        }

        private void label4_MouseEnter(object sender, EventArgs e)
        {
            this.lblOlvidoContrasena.BackColor = Color.FromArgb(074, 074, 074);
        }

        private void BtnCancelar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void BtnIngresar_Click(object sender, EventArgs e)
        {
            usuario_actual = personalController.iniciarSesion(textUsuario.Text, textContrasenha.Text);
            Modulo modulo = logController.buscarModulo(modulo_id);

            if (usuario_actual.contrasenha_antigua == null)
            {                
                registroActividad.Modulo = modulo;
                registroActividad.Usuario = Program.UsuarioActual;
                registroActividad.fecha_registro = DateTime.Now;
                registroActividad.descripcion = "Error de datos ingresados al inicio de sesión.";
                logController.registrarActividad(registroActividad);

                FormError error = new FormError("Los datos ingresados no son correctos");
                error.ShowDialog(this);
            }
            else
            {
                if (usuario_actual.contrasenha_antigua != null && usuario_actual.PerfilPersonal[0].estado == "Inactivo")
                {
                    registroActividad.Modulo = modulo;
                    registroActividad.Usuario = Program.UsuarioActual;
                    registroActividad.fecha_registro = DateTime.Now;
                    registroActividad.descripcion = "Un usuario inactivo ha querido ingresar al sistema.";
                    logController.registrarActividad(registroActividad);

                    FormError error = new FormError("El usuario ha sido dado de baja.\nContactar al administrador");
                    error.ShowDialog(this);
                }
                else
                {
                    if (usuario_actual.contrasenha_antigua != null && usuario_actual.sesion == 1)
                    {
                        registroActividad.Modulo = modulo;
                        registroActividad.Usuario = Program.UsuarioActual;
                        registroActividad.fecha_registro = DateTime.Now;
                        registroActividad.descripcion = "El usuario ya se encuentra logueado.";
                        logController.registrarActividad(registroActividad);

                        FormError error = new FormError("El usuario ya se encuentra logueado");
                        error.ShowDialog(this);
                    }
                    else
                    {
                        personalController.setSesionActiva(usuario_actual);
                        Program.UsuarioActual = usuario_actual;
                        registroActividad.Modulo = modulo;
                        registroActividad.Usuario = Program.UsuarioActual;
                        registroActividad.fecha_registro = DateTime.Now;
                        registroActividad.descripcion = "Inicio sesión.";
                        logController.registrarActividad(registroActividad);
                        Principal p = new Principal(usuario_actual);
                        p.ShowDialog(this);
                        textContrasenha.Clear();
                        textUsuario.Clear();
                    }
                }
            } 
        }

        private void lblOlvidoContrasena_Click(object sender, EventArgs e)
        {
            OlvidoContrasena o = new OlvidoContrasena();
            o.ShowDialog(this);
        }
    }
}
